﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using System.Net.Mail;
using InfraWEB.Comum.Email;
using InfraWEB.Comum.Password;
using InfraWEB.BLL;

namespace InfraWEB.UI
{
	public partial class LembrarSenha : System.Web.UI.Page
	{
		protected void Page_Load(object sender, EventArgs e)
		{
			if (Page.IsPostBack)
			{
				lblMensagem.Visible = false;
				lblMensagem.Text = "";
			}
		}

		protected void btnEnviar_Click(object sender, EventArgs e)
		{
			string recipientAddress = txtEmail.Text;
			Usuario user = new Usuario();
			int usersCount = user.GetUsuariosByUsuEmail(recipientAddress).Count;
			if (recipientAddress != null && usersCount != 0)
			{
				for (int i = 0; i < usersCount; i++)
				{
					//Gera-se uma senha randômica de 8 dígitos
					string newPassword = PasswordGenerator.Generate(8);
					int id = user.GetUsuariosByUsuEmail(recipientAddress)[i].UsuId;
					string login = user.GetUsuariosByUsuEmail(recipientAddress)[i].UsuLogin;
					string name = user.GetUsuariosByUsuEmail(recipientAddress)[i].UsuNome;
					int type = user.GetUsuariosByUsuEmail(recipientAddress)[i].UsuTipo;
					user.RecordUsuario(id, login, newPassword, name, recipientAddress, type);
					string title = "[noreply] Administração do Sistema Módulo Infra-Estrutura";
					string text = "Olá " + name + "!" + "\r\n" + "\r\n";
					text += "Foi solicitada a recuperação de seus dados de acesso ao Sistema Módulo Infra-Estrutura:" + "\r\n" + "\r\n";
					text += "Login: " + login + "\r\n" + "Senha: " + newPassword + "\r\n" + "\r\n";
					text += "Atenciosamente," + "\r\n" + "\r\n";
					text += "Administrador";
					//text += "Esta mensagem e seus anexos podem conter informações confidenciais ou privilegiadas. ";
					//text += "Se você não é o destinatário dos mesmos, você não está autorizado a utilizar o material para qualquer fim. ";
					//text += "Solicitamos que você apague a mensagem e avise imediatamente ao remetente. ";
					//text += "O conteúdo desta mensagem e seus anexos não representam necessariamente a opinião e a intenção da empresa, não implicando em qualquer obrigação ou responsabilidade da parte da mesma.";
					string senderAddress = "sistemainfraestrutura@gmail.com";
					string server = "smtp.gmail.com";
					string serverPassword = "sistemapece";
					Email email = new Email(recipientAddress, senderAddress, title, text);
					NetworkCredential mailAuthentication = new NetworkCredential(senderAddress, serverPassword);
					SmtpClient mailClient = new SmtpClient(server, 587);
					mailClient.EnableSsl = true;
					mailClient.UseDefaultCredentials = false;
					mailClient.Credentials = mailAuthentication;
					mailClient.Send(email.Mail);
				}
				lblMensagem.Visible = false;
				lblMensagem.Text = "";
				Context.Items["EmailSendStatus"] = "true";
				Server.Transfer("~/Login.aspx");
			}
			else
			{
				lblMensagem.Visible = true;
				lblMensagem.Text = "Email inválido.";
			}
		}

		protected void btnVoltar_Click(object sender, EventArgs e)
		{
			lblMensagem.Visible = false;
			lblMensagem.Text = "";
			Response.Redirect("~/Login.aspx");
		}
	}
}
